// // 注意: redux就是一个普通的js库, 这里写的代码根react半毛钱关系都没有

// // 需求: store对象里面存储的数据,应该是一个对象 {count: 0, msg: 'hello redux'}, 要对count进行递增

// import { createStore } from 'redux'

// // createStore就是用来创建store对象的一个函数

// // 创建store时,要传入reducer.而reducer其实就是一个函数
// // function reducer(state, action) {
// //   // state 就是store中存储的最新的数据
// //   // action 就是需求对象
// //   // action对象 {type: 'increment'}
// //   switch (action.type) {
// //     case 'increment':
// //       // 对数据进行递增的操作

// //       // 注意: 在reducer函数中,return的结果是什么,就把store中的数据改成了什么
// //       return 计算之后的最新的结果

// //     case 'decrement':
// //       // 对数据进行递减的操作

// //       return 计算之后的最新的结果

// //     default:
// //       return state
// //   }
// // }

// // reducer的执行时机:
// // 1. 创建store的时候,reducer会被调用,这一次是为了初始化redux中的数据
// // 2. 执行store.dispatch(action对象),reducer会被调用. 是为了修改数据
// function reducer(state = { count: 0, msg: 'hello redux' }, action) {
//   //   console.log('reducer被调用了', state, action)
//   switch (action.type) {
//     case 'inc':
//       return {
//         ...state,
//         // count: 0
//         // msg: 'hello redux'
//         count: state.count + 1,
//       }

//     default:
//       return state
//   }
// }

// const store = createStore(reducer)

// // 注意: 一定要在修改数据之前监听,否则监听不到
// store.subscribe(() => {
//   console.log(store.getState())
// })
// // 如何想要查看redux中的数据
// // store.getState() 返回值就是redux中存储的数据
// // store.dispatch({type: 'inc'}) 让reducer执行,从而修改数据
// // store.subscribe(()=>{}) 一旦redux的数据发生变化,则回调函数会被执行
// // console.log(store.getState())
// store.dispatch({ type: 'inc' })
// store.dispatch({ type: 'inc' })
// store.dispatch({ type: 'inc' })
// // console.log(store.getState())

// redux练习

// 需求:  redux数据 : {c: 8, msg: '123'} , 一个递增,一个递减

// 1.引入createStore
import { createStore } from 'redux'

// 2. 定义reducer
function reducer(state = { c: 8, msg: '123' }, action) {
  switch (action.type) {
    case 'inc':
      return {
        ...state,
        c: state.c + 1,
      }

    case 'dec':
      return {
        ...state,
        c: state.c - 1,
      }

    default:
      return state
  }
}

// 3. 创建store
const store = createStore(reducer)

// 监听redux数据变化
store.subscribe(()=>{
    console.log(store.getState());
})

// 递增 
store.dispatch({type:'inc'})
store.dispatch({type:'inc'})
store.dispatch({type:'inc'})

// 递减
store.dispatch({type: 'dec'})
